<?php

namespace app\test514\controller;

use app\test512\controller\TPOSS;
use app\test514\model\Content;
use think\cache\driver\Redis;
use think\Controller;
use think\Db;
use think\Request;

class Article extends Controller
{
    /**
     * 显示资源列表
     *返回表单
     * @return \think\Response
     */
    public function index()
    {
        //开启服务
        $redis = new Redis();

        //查询数据分页并返回数据
        $data1 = Content::paginate(2);

        $data2 =Db::table('content')->all();




        return view('article/index',compact('data1','data2'));
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //调用添加视图
        return view('article/create');
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //接收值
        $data = input();
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('a_images');
        // 移动到框架应用根目录/uploads/ 目录下
        $info = $file->move( 'uploads');
        if($info){
            // 成功上传后 获取上传信息
            // 输出 jpg

            // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            $img =  $info->getSaveName();

        }
        //上传到云存储
        $obj = new TPOSS();
        $rest = $obj->uploadOssFile('yw666',$img);

        //给图片加入裁切和水印
        $data['a_images'] = $rest['info']['url'].'?x-oss-process=style/400-300';

        //添加入库
       $res =  Content::create($data,true);

       if ($res)
       {
           return redirect('article/index');
       }else{
           $this->error('添加错误');
       }

    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //启动redis服务
        $redis = new Redis();
        $IP = get_client_ip();

        //判断Redis里是否有有ip
            $ipRes =$redis->EXISTS('IP'.$IP);

            if ($ipRes==0)
            {
                //设置缓存
                $redis->set('IP'.$IP,1);
                //设置过期时间,30秒
                $redis->EXPIRE('IP'.$IP,30);
            }else{
                //让请求一次自增1
                $num=$redis->incr('IP'.$IP);
                if ($num>5){
                    $this->error('请求过频繁,请稍后再试!');
                }
            }
        if ($redis->get('read'.$id))
        {
            $One = $redis->get('read'.$id);
            return view('article/read',compact('One'));
        }
        //根据ID 查询一条
        $One = Content::where('id',$id)->find();
         $redis->set('read'.$id,$One);
        return view('article/read',compact('One'));
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }

    /**
     * 点赞增加
     *Method like
     *user:大飞
     *time:2021/5/14 11:48
     */
    public function like($id){
        //开启redis服务
        $redis = new Redis();
        //根据条件让点赞加一
        $like =  Content::where('id',$id)->setInc('like');


        if ($redis->get('like'.$id)==null)
        {


           //设置缓存
            $redis->set('like'.$id,$like);

            return ['code'=>200,'msg'=>'请求成功','data'=>$like];
        }else{
            $redis->incr('like'.$id);
            $like = $redis->get('like'.$id);

            return ['code'=>400,'msg'=>'取出缓存','data'=>$like];
        }

    }


    /**
     * 排行榜
     *Method ranking
     *user:大飞
     *time:2021/5/14 12:09
     */
    public function ranking()
    {



    }

}
